home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 23 / AACD 23.iso / AACD / Programming / tek / kn / elate / exec / initlock.c < prev    next >
Encoding:
C/C++ Source or Header  |  2001-05-12  |  668 b   |  41 lines

  1.  
  2. #include "tek/kn/elate/exec.h"
  3.  
  4. /* 
  5. **    TEKlib
  6. **    (C) 2001 TEK neoscientists
  7. **    all rights reserved.
  8. **
  9. **    TBOOL kn_initlock(TKNOB *lock)
  10. **
  11. **    init kernel lock
  12. **
  13. */
  14.  
  15. TBOOL kn_initlock(TKNOB *lock)
  16. {
  17.     if (sizeof(TKNOB) >= sizeof(ELATE_MUTEX))
  18.     {
  19.         if (kn_mtx_init((ELATE_MUTEX *) lock, MTX_FIFO|MTX_NONE|MTX_RECURSIVE, 0) == 0)
  20.         {
  21.             return TTRUE;
  22.         }
  23.     }
  24.     else
  25.     {
  26.         ELATE_MUTEX *mtx = kn_alloc(sizeof(ELATE_MUTEX));
  27.         if (mtx)
  28.         {
  29.             if (kn_mtx_init(mtx, MTX_FIFO|MTX_NONE|MTX_RECURSIVE, 0) == 0)
  30.             {
  31.                 *((ELATE_MUTEX **) lock) = mtx;
  32.                 return TTRUE;
  33.             }
  34.             kn_free(mtx);
  35.         }
  36.     }
  37.  
  38.     dbkprintf(10, "*** TEKLIB kernel: could not create lock\n");
  39.     return TFALSE;
  40. }
  41.